package com.spider.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.regex.Pattern;

import com.spider.date.DBCenter;

/**
 * 
 * 读取抓取url的辅助类，从文件中读取url连接地址 判断成功后，放后排队队列中。
 * 
 * @author liuhao
 * 
 */
public class HttpURLFile {

	/**
	 * 获得url配置文件中的url，如果改行是以#开头，表示注释，不进行抓取，即不会添加到要抓取的队列中。
	 */
	public static void getHttpUrl(String path) {
		List<String> list_url = DBCenter.getUrl_list();
		File file = new File(path);
		if(!file.exists()){
			System.err.println(file.getAbsolutePath() + " is not exists.");
			System.exit(1);
		}
			BufferedReader buff = null;
			try {
			String url = null;
			String regex = "^((https|http|ftp|rtsp|mms)?://)"+"?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?"+
			 					"(([0-9]{1,3}\\.){3}[0-9]{1,3}"+"|"+"([0-9a-z_!~*'()-]+\\.)*"+"([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\."+
			 					"[a-z]{2,6})"+"(:[0-9]{1,4})?"+"((/?)|"+"(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";   //正则表达式，判断url 是否合法
			 buff =  new BufferedReader(new InputStreamReader(new FileInputStream(file)));
			 while((url = buff.readLine())!=null){
				if(url.startsWith("#")){
					continue;
				}
				url = url.trim();
				if(Pattern.matches(regex, url)){
					list_url.add(url);
				}
				
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				buff.close();
			} catch (IOException e) {
			}
		}
	}
}
